Repository navigation
Build the Elekloader catalogue from per-module records - #614
Merged
repeat98 merged 1 commit intoOct 14, 2026
Merged
Conversation
Every Digitakt/Digitone module PR added pins to vendor/elekloader/catalog/catalog.json and changed the whole-catalogue revision there and the catalogue hash and count in the lock, so each merge left the other open module PRs conflicted. The upstream cores and mods move to vendor/elekloader/upstream-catalog.json, which the lock now pins alone (written and verified by the kit's own tool). Modwerk-built pins already live in each module's import record, sdk/imports/elekloader-*.json; the served catalog.json is the upstream catalog plus every record, generated by prepare and never committed. Every consumer keeps reading the same path. The assembled catalogue holds the same 43 pins as before; only their order and therefore the revision change once. elekloader:update writes the upstream part and locks it alone, and --overlay names a module record. The author-release check assembles the served catalogue at the base and head from Git objects and keeps every rule; an author may change only a record holding nothing but their own pins, and the lock now always needs owner review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
repeat98
added a commit
that referenced
this pull request
Oct 14, 2026
…e list (#611) * Give each module its own changelog file and stop committing the module list Every Digitakt/Digitone module PR edited the same lines of src/catalog/machine-modules.json and src/community/module-changelogs.json, so each merge left the other open module PRs conflicted until they were refreshed and re-checked. Release notes now live in src/community/module-changelogs/<id>.json, one file per module. Both combined files are generated instead of committed: npm ci (prepare) and npm run check write them, and every import keeps working. The author-release scope check applies the same rules per file: only the author's own modules' notes, published entries preserved. A Digi manifest change now decides the Worker deploy directly, as the committed list's diff did before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Build the Elekloader catalogue from per-module records (#614) Every Digitakt/Digitone module PR added pins to vendor/elekloader/catalog/catalog.json and changed the whole-catalogue revision there and the catalogue hash and count in the lock, so each merge left the other open module PRs conflicted. The upstream cores and mods move to vendor/elekloader/upstream-catalog.json, which the lock now pins alone (written and verified by the kit's own tool). Modwerk-built pins already live in each module's import record, sdk/imports/elekloader-*.json; the served catalog.json is the upstream catalog plus every record, generated by prepare and never committed. Every consumer keeps reading the same path. The assembled catalogue holds the same 43 pins as before; only their order and therefore the revision change once. elekloader:update writes the upstream part and locks it alone, and --overlay names a module record. The author-release check assembles the served catalogue at the base and head from Git objects and keeps every rule; an author may change only a record holding nothing but their own pins, and the lock now always needs owner review. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
repeat98
added a commit
to sumedho/modwerk
that referenced
this pull request
Oct 14, 2026
Main now generates the module list and the combined changelog and builds the Elekloader catalogue from per-module records (repeat98#611, repeat98#614). This moves the Sample Snap and Crossfade 0.2.2 release notes into src/community/module-changelogs/digitakt-sample-tools.json, drops the old combined files and catalog.json edits (its pins are already in sdk/imports/elekloader-sample-tools-2026-10-14.json) and takes main's upstream catalogue and lock unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second of two PRs, stacked on #611. After both, two Digitakt/Digitone module PRs no longer edit any of the same files, so merging one leaves the other green and mergeable.
The problem
Every Digi module PR also edited:
vendor/elekloader/catalog/catalog.json: it appended the module's pins and changed the whole-cataloguerevision;vendor/elekloader/elekloader.lock.json: the catalogue hash and the mod count.The second of any two PRs therefore always conflicted.
What changes
vendor/elekloader/upstream-catalog.json(new, committed) holds elekloader's upstream cores and mods (5 cores, 21 mods). The lock now pins this file alone. It was written and verified by the kit's ownlockandverify --lock, and its kit section is unchanged.sdk/imports/elekloader-*.json. All 17 such pins in the oldcatalog.jsonmatched their record exactly.catalog/catalog.jsonis now the upstream catalogue plus every record.preparegenerates it (npm ci,npm run check,npm run dev), it is never committed, and the builder, scripts and tests keep reading the same path.1041766→fead123. As before, older configuration backups still import, with their modules checked again.elekloader:checkverifies the kit and upstream catalogue against the lock, thatcatalog.jsonequals upstream plus records, and every pinned file.npm run elekloader:update:--overlaynow names a record insdk/imports/;--librarykeeps the record packages and anything they require.authorizeVendorrules apply: other modules, cores, OS targets and licences frozen; exact source-commit pins; every approved OS package updated; stock target, author and licence kept.upstream-catalog.json, and the distribution notices were regenerated. No licence or credit changed.vendor/elekloader/README.md, ADD_A_MODULE, MODULE_AUTHOR_UPDATES and DECISIONS. VERIFICATION.md is left as its historical log.Tested
npm run check -- --base origin/mainpassed: 284 test files, 2,329 tests, plus lint, typecheck, bundle and sdk checks.elekloader:check, the changelog check and the module-list check pass.Not tested
elekloader:updateagainst a real elekloader release or a GitHub download. The CLI tests use a local kit zip and already-present packages.Merge order
Merge #611 first, then retarget this PR to
main. Open module PRs written for the old layout (#577 and the Octatrack ones in #611's list) need a one-time move. Their Elekloader pins already sit in their records, so the move is:catalog.jsonand lock edits;npm run prepare.🤖 Generated with Claude Code